2. ヒストグラム

データのばらつきを見たい場合は,ヒストグラムを利用します.

2.1. 環境構築

# Notebook初期設定
%matplotlib inline
%config InlineBackend.figure_format = 'retina'

import warnings
warnings.filterwarnings('ignore')
import os
import pandas as pd
import plotly.express as px
DIR_IN = '../data/preprocess/out'
FN_WJ = 'wj.csv'
RENDERER = 'plotly_mimetype+notebook'

2.2. 関数

def show_fig(fig):
    """Jupyter Bookでも表示可能なようRendererを指定"""
    fig.show(renderer=RENDERER)

2.3. データの読み込み

df = pd.read_csv(os.path.join(DIR_IN, FN_WJ))
df.head(2).T
0 1
cid C89412 C89712
creator 永井豪とダイナミックプロ ちばてつや
note 4色カラー NaN
epname 赤い嵐の巻 盗まれた金の巻
pageStart 7.0 39.0
pageEnd 37.0 53.0
miid M544830 M544830
cname ハレンチ学園 モサ
miname 週刊少年ジャンプ 1969年 表示号数20 週刊少年ジャンプ 1969年 表示号数20
datePublished 1969-11-03 1969-11-03
mcid C119459 C119459
issueNumber 24 24
numberOfPages 296.0 296.0
publisher 集英社 集英社
volumeNumber 2 2
price 90.0 90.0
editor 長野規 長野規

2.4. 掲載作品数の分布

掲載作品数の分布を見てみます.

df_tmp = df.value_counts('datePublished').reset_index()
df_tmp.columns = ['date', '掲載作品数']
fig = px.histogram(df_tmp, x='掲載作品数')
show_fig(fig)
  • 最小で12,最大で57の漫画作品が掲載されており,

  • 掲載数16および20にピークがある

ことがわかります.

掲載作品数が少ないのは,

df_tmp.sort_values('掲載作品数').head()
date 掲載作品数
2337 1974-04-15 12
2324 1976-01-05 12
2325 1971-08-30 12
2326 1971-04-05 12
2327 1974-12-30 12

過去の巻号が多そうです.そこで,subplotを使って年代ごとにヒストグラムを描いてみます.

df_tmp['year'] = pd.to_datetime(df_tmp['date']).dt.year
df_tmp['year_10'] = df_tmp['year'] // 10 * 10 # 10年刻み
year_10s = sorted(df_tmp['year_10'].unique())
fig = px.histogram(df_tmp, x='
df_tmp['year'] // 10 * 10
0       2010
1       2010
2       2010
3       2010
4       2000
        ... 
2333    1970
2334    1970
2335    1970
2336    1970
2337    1970
Name: year, Length: 2338, dtype: int64

2.5. ページ数の分布

合計ページ数の分布を見てみます.

df_tmp = \
    df.groupby('datePublished')['numberOfPages'].first().reset_index()
fig = px.histogram(df_tmp, x='numberOfPages')
show_fig(fig)